from xen.xend.XendConstants import *
from xen.xend.XendAPIConstants import *
from xen.xend.server.DevConstants import xenbusState
+from xen.xend.server.BlktapController import TAPDISK_DEVICE, parseDeviceString
from xen.xend.XendVMMetrics import XendVMMetrics
try:
if(self.domid):
# get all blktap2 devices
- dev = xstransact.List(self.vmpath + 'device/tap2')
+ dev = xstransact.List(self.vmpath + '/device/tap2')
for x in dev:
path = self.getDeviceController('tap2').readBackend(x, 'params')
- if path and path.startswith('/dev/xen/blktap-2'):
- #Figure out the sysfs path.
- pattern = re.compile('/dev/xen/blktap-2/tapdev(\d+)$')
- ctrlid = pattern.search(path)
- ctrl = '/sys/class/blktap2/blktap' + ctrlid.group(1)
- #pause the disk
- f = open(ctrl + '/pause', 'w')
- f.write('pause');
- f.close()
+ if path and path.startswith(TAPDISK_DEVICE):
+ try:
+ _minor, _dev, ctrl = parseDeviceString(path)
+ #pause the disk
+ f = open(ctrl + '/pause', 'w')
+ f.write('pause');
+ f.close()
+ except:
+ pass
except Exception, ex:
log.warn('Could not pause blktap disk.');
"""
try:
if(self.domid):
- dev = xstransact.List(self.vmpath + 'device/tap2')
+ dev = xstransact.List(self.vmpath + '/device/tap2')
for x in dev:
path = self.getDeviceController('tap2').readBackend(x, 'params')
- if path and path.startswith('/dev/xen/blktap-2'):
- #Figure out the sysfs path.
- pattern = re.compile('/dev/xen/blktap-2/tapdev(\d+)$')
- ctrlid = pattern.search(path)
- ctrl = '/sys/class/blktap2/blktap' + ctrlid.group(1)
- #unpause the disk
- if(os.path.exists(ctrl + '/resume')):
- f = open(ctrl + '/resume', 'w');
- f.write('resume');
- f.close();
+ if path and path.startswith(TAPDISK_DEVICE):
+ try:
+ #Figure out the sysfs path.
+ _minor, _dev, ctrl = parseDeviceString(path)
+ #unpause the disk
+ if(os.path.exists(ctrl + '/resume')):
+ f = open(ctrl + '/resume', 'w');
+ f.write('resume');
+ f.close();
+ except:
+ pass
except Exception, ex:
log.warn('Could not unpause blktap disk: %s' % str(ex));